package com.obrempon.credit.market.utils.helper

import com.obrempon.credit.market.BuildConfig
import com.obrempon.credit.market.ObremponApp
import com.obrempon.credit.market.configs.ObremponApiPath
import com.obrempon.credit.market.configs.ObremponApiUrl
import com.obrempon.credit.market.configs.ObremponConfigs
import com.obrempon.credit.market.sdk.analyse.ObremponAnalyseBuilder
import com.obrempon.credit.market.sdk.analyse.ObremponAnalyseUtil
import com.obrempon.credit.market.sdk.device.ObremponDeviceSycBuilder
import com.obrempon.credit.market.sdk.device.ObremponDeviceSycManager
import com.obrempon.credit.market.utils.shared.ObremponSharedHelper
import com.obrempon.credit.market.utils.shared.ObremponSharedKey

/**
 * TODO: Analysis Lib 初始化时机
 */
object ObremponAnalysisHelper {

    /**
     * TODO: APP启动时，初始化一下 analysis lib
     */
    fun initAnalysisLibAtAppLaunch() {
        ObremponAnalyseBuilder.product = ObremponConfigs.OBREMPON_APPNAME
        ObremponAnalyseBuilder.appVersion = BuildConfig.VERSION_CODE.toString()
        ObremponAnalyseBuilder.appPckName = ObremponConfigs.OBREMPON_PACKAGENANME

        ObremponAnalyseBuilder.aesKey = ObremponConfigs.getObremponSecretKey()
        ObremponAnalyseBuilder.aesIv = ObremponConfigs.getObremponSecretIv()

        ObremponAnalyseBuilder.host = ObremponApiUrl.OBREMPON_HOST
        ObremponAnalyseBuilder.zone = ""
        ObremponAnalyseBuilder.pathCommon = ObremponApiUrl.getRandomUrl()

        ObremponAnalyseBuilder.pathGoogleInstall = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_GOOGLE_INSTALL_PATH
        ObremponAnalyseBuilder.pathAdjustInstall = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_ADJUST_INSTALL_PATH
        ObremponAnalyseBuilder.pathFacebookInstall = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_FACEBOOK_INSTALL_PATH
        ObremponAnalyseBuilder.pathFirebaseInstall = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_FIREBASE_INSTALL_PATH

        ObremponAnalyseUtil.init(ObremponApp.app)
    }

    /**
     * TODO: 成功获取地区转发路径时，初始化一下 analysis lib
     */
    fun initAnalysisLibAtZoneSuccess() {
        ObremponAnalyseBuilder.zone = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TIMEZONE)
        ObremponAnalyseUtil.init(ObremponApp.app)
    }

    /**
     * TODO: 成功登录时，初始化一下 analysis lib
     */
    fun initAnalysisLibAtLoginSuccess() {
        ObremponAnalyseBuilder.token = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TOKEN)
        ObremponAnalyseBuilder.userId = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_USERID)
        ObremponAnalyseUtil.init(ObremponApp.app)
    }
}

/**
 * TODO: Analysis Lib 打点时机
 */
object TestAnalysisAddEvent {

    /**
     * TODO: 在调用登录接口，并成功返回时，如果 type=="REGISTER"，则调用注册事件打点
     */
    fun addRegisterEvent() {
        ObremponAnalyseUtil.addRegisterEvent()
    }

    /**
     * TODO: 在调用提交贷款申请接口，并成功返回时，则调用申请事件打点
     */
    fun addApplyEvent() {
        ObremponAnalyseUtil.addApplyEvent()
    }
}

/**
 * TODO: Data Lib 初始化时机
 */
object TestDataLibInit {

    /**
     * TODO: 成功获取地区转发路径时，初始化一下 data lib
     */
    fun initDataLibAtZoneSuccess() {
        ObremponDeviceSycBuilder.aesKey = ObremponConfigs.getObremponSecretKey()
        ObremponDeviceSycBuilder.aesIv = ObremponConfigs.getObremponSecretIv()

        ObremponDeviceSycBuilder.product = ObremponConfigs.OBREMPON_APPNAME
        ObremponDeviceSycBuilder.appid = ObremponConfigs.OBREMPON_APPNAME

        ObremponDeviceSycBuilder.advertId = ObremponAnalyseUtil.getAdId()
        ObremponDeviceSycBuilder.androidId = ObremponAnalyseUtil.getAndroidId()

        ObremponDeviceSycBuilder.host = ObremponApiUrl.OBREMPON_HOST
        ObremponDeviceSycBuilder.zone = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TIMEZONE)
        ObremponDeviceSycBuilder.pathCommon = ObremponApiUrl.getRandomUrl()
        ObremponDeviceSycBuilder.pathApl = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_APPLIST_PATH
        ObremponDeviceSycBuilder.pathMag = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_SMS_PATH
        ObremponDeviceSycBuilder.pathDie = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_DEVICE_PATH
        ObremponDeviceSycBuilder.pathBty = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_BATTERY_PATH
        ObremponDeviceSycBuilder.pathHdw = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_HARDWAVE_PATH
        ObremponDeviceSycBuilder.pathContat = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_CONTACT_PATH
        ObremponDeviceSycBuilder.pathSto = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_STORGE_PATH
        ObremponDeviceSycBuilder.pathNtw = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_WIFI_PATH
        ObremponDeviceSycBuilder.pathCal = ObremponApiPath.OBREMPON_ANALYSIS.OBREMPON_ANALYSIS_CALLLOG_PATH

        ObremponDeviceSycManager.init(ObremponApp.app)
    }
}

/**
 * TODO: Data Lib 调用时机
 */
object TestDataLibInvoke {

    /**
     * TODO: 在首页每次点击申请时（在已登录的前提下），调用一下 data lib 的上报
     */
    fun sycData() {
        val token = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TOKEN)
        ObremponDeviceSycBuilder.advertId = ObremponAnalyseUtil.getAdId()
        ObremponDeviceSycBuilder.androidId = ObremponAnalyseUtil.getAndroidId()

        ObremponDeviceSycManager.syncData(token = token) {
            // 当前业务可忽略这个回调
        }
    }

    /**
     * TODO: 进入主页 并且 已同意 PHONE_STATE 权限之后，或 权限申请页面，同意PHONE_STATE权限之后
     *  包含：HARDWARE、STORE、DEVICE
     */
    fun sycPhoneStateStoreDeviceHardwareData(){
        val token = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TOKEN)
        ObremponDeviceSycBuilder.advertId = ObremponAnalyseUtil.getAdId()
        ObremponDeviceSycBuilder.androidId = ObremponAnalyseUtil.getAndroidId()
        ObremponDeviceSycManager.sycPhoneStateStoreDeviceHardwareData(token = token) {
            // 当前业务可忽略这个回调
        }
    }

    /**
     * TODO:  在进入 进件信息和申贷页面上报
     *  包含：Battery、WIFI
     */
    fun sycPhoneStateBatteryWifiData(){
        val token = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TOKEN)
        ObremponDeviceSycBuilder.advertId = ObremponAnalyseUtil.getAdId()
        ObremponDeviceSycBuilder.androidId = ObremponAnalyseUtil.getAndroidId()
        ObremponDeviceSycManager.sycPhoneStateBatteryWifiData(token = token) {
            // 当前业务可忽略这个回调
        }
    }

    /**
     * TODO: 在填进件信息或进入申贷页面之前
     * 包含：AppList、Sms
     * 同意sms权限之后
     */
    fun sycReadAListAndMSData(){
        val token = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_TOKEN)
        ObremponDeviceSycBuilder.advertId = ObremponAnalyseUtil.getAdId()
        ObremponDeviceSycBuilder.androidId = ObremponAnalyseUtil.getAndroidId()
        ObremponDeviceSycManager.sycReadAListAndMSData(token = token) {
            // 当前业务可忽略这个回调
        }
    }
}